﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Chilis.Franquicias.EnEntidad;
using Chilis.Franquicias.Common;
using Chilis.Franquicias.Web.ServiceControler;
using Chilis.Franquicias.Web.Models.ViewModel;

namespace Chilis.Franquicias.Web.Controllers
{
    public class EntrevistaController : Controller
    {
        //
        // GET: /Entrvista/

        public ActionResult Buscar()
        {
            EntrevistaViewModel oEntrevistaViewModel = new EntrevistaViewModel();
            oEntrevistaViewModel.FQ_Entrevista = new FQ_Entrevista();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud = new FQ_Solicitud();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud.FQ_EstadoSolicitud = new FQ_EstadoSolicitud();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud.FQ_Candidato = new FQ_Candidato();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud.FQ_Candidato.FQ_TipoCandidato = new FQ_TipoCandidato();
            oEntrevistaViewModel.ListaFQ_EstadoSolicitud = SolicitudServicioControler.ListaEstadoSolicitudEntrvista();
            oEntrevistaViewModel.ListaFQ_TipoCandidato = CandidatoServiceControler.ListaTipoCandidato();
            return View(oEntrevistaViewModel);
        }


        public ActionResult Registar(Int32 ID = Constantes.ValorCero)
        {
            EntrevistaViewModel oEntrevistaViewModel = new EntrevistaViewModel();
            oEntrevistaViewModel.FQ_Entrevista = new FQ_Entrevista();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud = new FQ_Solicitud();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud.FQ_EstadoSolicitud = new FQ_EstadoSolicitud();
            oEntrevistaViewModel.FQ_Entrevista.FQ_Solicitud.FQ_Candidato = new FQ_Candidato();
            oEntrevistaViewModel.FQ_Entrevista = EntrevistaServicioControler.SeleccionarSolicitudEntrvista(ID);
            oEntrevistaViewModel.ListaFQ_EstadoSolicitud = SolicitudServicioControler.ListaEstadoSolicitudEntrvista();
            oEntrevistaViewModel.FQ_Entrevista.FechaRegistro = DateTime.Now;
            return View(oEntrevistaViewModel);
        }

        public ActionResult EntrevistaPV_Grilla(Int32 PFQ_EstadoSolicitud_ID = Constantes.ValorCero, Int32 PTipoCandidato_ID = Constantes.ValorCero, String PIDNombreCandidato = Constantes.ValorDefecto, String PIDNumeroDocumentoCandidato = Constantes.ValorDefecto, String sort = "FQ_Solicitud_ID", int page = 0, String sortDir = "DESC")
        {
            int pageIndex = page;
            EntrevistaViewModel oEntrevistaViewModel = new EntrevistaViewModel();
            if (page == Constantes.ValorCero || page == Constantes.MenosUno)
            {
                oEntrevistaViewModel.FQ_Entrevista = new FQ_Entrevista()
                {
                    FQ_Solicitud = new FQ_Solicitud()
                    {
                        FQ_EstadoSolicitud = new FQ_EstadoSolicitud()
                        {
                            FQ_EstadoSolicitud_ID = PFQ_EstadoSolicitud_ID
                        },
                        FQ_Candidato = new FQ_Candidato()
                        {
                            FQ_TipoCandidato = new FQ_TipoCandidato()
                            {
                                TipoCandidato_ID = PTipoCandidato_ID
                            },
                            Nombre = PIDNombreCandidato,
                            NumeroDocumento = PIDNumeroDocumentoCandidato,
                        }
                    }
                };
            }

            if (page != Constantes.MenosUno && !(page > Constantes.ValorUno))
            {
                page = Constantes.ValorUno;
            }
            bool sw = false;
            if (page == Constantes.MenosUno)
            {
                page = Constantes.ValorUno;
                sw = true;
                Session["oEntrevistaViewModel.FQ_Entrevista"] = null;
            }

            if (oEntrevistaViewModel == null)
            {
                oEntrevistaViewModel = new EntrevistaViewModel();
            }

            if (Session["oEntrevistaViewModel.FQ_Entrevista"] == null)
            {
                Session["oEntrevistaViewModel.FQ_Entrevista"] = oEntrevistaViewModel.FQ_Entrevista;
            }
            else
            {
                oEntrevistaViewModel.FQ_Entrevista = (FQ_Entrevista)Session["oEntrevistaViewModel.FQ_Entrevista"];
            }
            int Total;

            int EntrevistaPorPagina = Constantes.RegistrosPorPagina;
            if (page == Constantes.ValorUno) { page = Constantes.ValorCero; } else { page = ((page - Constantes.ValorUno) * EntrevistaPorPagina) + Constantes.ValorUno; EntrevistaPorPagina--; }

            oEntrevistaViewModel.RegistroPorPagina = Constantes.RegistrosPorPagina;
            oEntrevistaViewModel.sortType = sortDir == "ASC" ? sort : sort + " DESC";
            oEntrevistaViewModel.startRowIndex = page;
            oEntrevistaViewModel.maximumRows = EntrevistaPorPagina;
            oEntrevistaViewModel.ListaFQ_Entrevista = EntrevistaServicioControler.ListaEstadosSolicitus_Entrvista(oEntrevistaViewModel.FQ_Entrevista,
                                                                                    oEntrevistaViewModel.sortType,
                                                                                    oEntrevistaViewModel.maximumRows,
                                                                                    oEntrevistaViewModel.startRowIndex,
                                                                                    out Total);

            oEntrevistaViewModel.TotalRegistros = Total;

            oEntrevistaViewModel.DescRegistrosPorPagina = UtilWebGrid.ContadorRegistrosWebGrid(
                pageIndex, oEntrevistaViewModel.RegistroPorPagina, oEntrevistaViewModel.TotalRegistros);

            if (sw)
            {
                return PartialView("EntrevistaPV_Grilla", oEntrevistaViewModel);
            }

            return View(oEntrevistaViewModel);
        }

        public ActionResult RegistrarEntrevista(EntrevistaViewModel oEntrevistaViewModel)
        {
            oEntrevistaViewModel.FQ_Entrevista.FechaRegistro = DateTime.Now;
            int resultado = EntrevistaServicioControler.CrearEntrevista(oEntrevistaViewModel.FQ_Entrevista);

            return Content(Convert.ToString(resultado));
        }

        public ActionResult RegistroFranquiciado(Int32 ID = Constantes.ValorCero)
        {
            EntrevistaViewModel oEntrevistaViewModel = new  EntrevistaViewModel();
            if (ID != 0)
            {
                oEntrevistaViewModel.FQ_Franquiciado = new FQ_Franquiciado();
                oEntrevistaViewModel.FQ_Franquiciado.FQ_Entrevista = new FQ_Entrevista();
                oEntrevistaViewModel.FQ_Franquiciado.FQ_Entrevista.FQ_Solicitud = new FQ_Solicitud();
                oEntrevistaViewModel.FQ_Franquiciado.FQ_Entrevista.FQ_Solicitud.FQ_Candidato = new FQ_Candidato();
                oEntrevistaViewModel.FQ_Franquiciado = FranquiciadoServicioControler.SeleccionarEntrevistaFranquiciado(ID);
                oEntrevistaViewModel.FQ_Franquiciado.FechaInicio = DateTime.Now;
                oEntrevistaViewModel.FQ_Franquiciado.FechaFin = DateTime.Now;
            }
           return View(oEntrevistaViewModel);
        }

        public ActionResult RegistrarFranquisiado(EntrevistaViewModel oEntrevistaViewModel)
        {
            Int32 resultado = Constantes.ValorCero;
            if (oEntrevistaViewModel.FQ_Franquiciado.FQ_Entrevista.FQ_Entrevista_ID != 0)
            {
                resultado = FranquiciadoServicioControler.CrearFranquisiado(oEntrevistaViewModel.FQ_Franquiciado);
            }
            else {
                resultado = Constantes.ValorCero;            
            }
            return Content(Convert.ToString(resultado));
        }
    }
}
